Processing DNS queries to identify pre-processing information

ABSTRACT

Systems and methods for processing a DNS query to identify and implement pre-processing information by a DNS server component in anticipation of a corresponding content request from a client computing device are provided. The pre-processing information can correspond to identification of content to be preloaded or other actions to be implemented by one or more computing devices in association with an anticipated client content request. Based on identification of the content or future actions, a DNS server component can provide the pre-processing information to one or more computing devices, such as computing devices of a CDN service provider and/or an original content provider, in advance of a corresponding request for content from the client computing device in order to improve performance associated with responding to the client request.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.16/203405, now U.S. Pat. No. 11,303,717, entitled “PROCESSING DNSQUERIES TO IDENTIFY PRE-PROCESSING INFORMATION” and filed on Nov. 28,2018, which is a continuation of U.S. patent application Ser. No.14/800,540, now U.S. Pat. No. 10,225,362, entitled “PROCESSING DNSQUERIES TO IDENTIFY PRE-PROCESSING INFORMATION” and filed on Jul. 15,2015, which in turn is a continuation of U.S. patent application Ser.No. 13/493,839, now U.S. Pat. No. 9,154,551, entitled “PROCESSING DNSQUERIES TO IDENTIFY PRE-PROCESSING INFORMATION” and filed on Jun. 11,2012, the disclosures of which are incorporated herein by reference.

BACKGROUND

Generally described, computing devices and communication networks can beutilized to exchange information. In a common application, a computingdevice can request content from another computing device via thecommunication network. For example, a user at a personal computingdevice can utilize a software browser application to request a Web pagefrom a server computing device via the Internet. In such embodiments,the user computing device can be referred to as a client computingdevice and the server computing device can be referred to as a contentprovider.

Content providers are generally motivated to provide requested contentto client computing devices often with consideration of efficienttransmission of the requested content to the client computing deviceand/or consideration of a cost associated with the transmission of thecontent. For larger scale implementations, a content provider mayreceive content requests from a high volume of client computing deviceswhich can place a strain on the content provider's computing resources.Additionally, the content requested by the client computing devices mayhave a number of components, which can further place additional strainon the content provider's computing resources.

With reference to an illustrative example, a requested Web page, ororiginal content, may be associated with a number of additionalresources, such as images or videos, which are to be displayed with theWeb page. In one specific embodiment, the additional resources of theWeb page are identified by a number of embedded resource identifiers,such as uniform resource locators (“URLs”). In turn, software on theclient computing devices typically processes embedded resourceidentifiers to generate requests for the content. Often, the resourceidentifiers associated with the embedded resources reference a computingdevice associated with the content provider such that the clientcomputing device would transmit the request for the additional resourcesto the referenced content provider computing device. Accordingly, inorder to satisfy a content request, the content provider would provideclient computing devices data associated with the Web page as well asthe data associated with the embedded resources.

Some content providers attempt to facilitate the delivery of requestedcontent, such as Web pages or resources identified in Web pages, throughthe utilization of a content delivery network (“CDN”) service provider.A CDN service provider typically maintains a number of computing devicesin a communication network that can maintain content from variouscontent providers. In turn, content providers can instruct, or otherwisesuggest to, client computing devices to request some, or all, of thecontent provider's content from the CDN service provider's computingdevices.

As with content providers, CDN service providers are also generallymotivated to provide requested content to client computing devices oftenwith consideration of efficient transmission of the requested content tothe client computing device and/or consideration of a cost associatedwith the transmission of the content. Accordingly, CDN service providersoften consider factors such as latency of delivery of requested contentin order to meet service level agreements or to generally improve thequality of delivery service.

BRIEF DESCRIPTION OF THE DRAWINGS

The foregoing aspects and many of the attendant advantages of thisinvention will become more readily appreciated as the same become betterunderstood by reference to the following detailed description, whentaken in conjunction with the accompanying drawings, wherein:

FIG. 1 is a block diagram illustrative of content delivery environmentincluding a number of client computing devices, a content provider, anda content delivery network (CDN) service provider;

FIG. 2 is a block diagram of the content delivery environment of FIG. 1illustrating the registration of a content provider with a CDN serviceprovider;

FIG. 3 is a block diagram of the content delivery environment of FIG. 1illustrating the generation of resource requests by a client computingdevice to a content provider;

FIG. 4A is a block diagram of the content delivery environment of FIG. 1illustrating the generation of DNS queries by a client computing deviceto a DNS server component;

FIG. 4B is a block diagram of the content delivery environment of FIG. 1illustrating the implementation of pre-processing information by a DNSserver component;

FIG. 5 is a block diagram of the content delivery environment of FIG. 1illustrating the generation of resource requests by a client computingdevice to a CDN service provider;

FIG. 6 is a flow diagram illustrative of a DNS query processing routineimplemented by a DNS server component; and

FIG. 7 is a flow diagram illustrative of a subroutine for implementationof pre-processing actions based on a DNS query as provided in the flowdiagram of FIG. 6 .

DETAILED DESCRIPTION

Generally described, the present disclosure is directed to processing ofa domain name service (“DNS”) query from a client computing device by aDNS server component, such as one or more DNS server components providedby a content delivery network (“CDN”) service provider or by any otherDNS service provider. Specifically, aspects of the disclosure will bedescribed with regard to processing a DNS query to identify andimplement pre-processing information by a DNS server component inanticipation of a corresponding resource request from a client computingdevice to a computing device identified by the DNS server componentresponsive to the DNS query. Illustratively, the pre-processinginformation can correspond to identification of content to beaccelerated or other actions to be implemented by one or more computingdevices in association with an anticipated content request. Based onidentification of the content or future actions, a DNS server componentcan provide the pre-processing information to one or more computingdevices, such as computing devices of a CDN service provider and/or anoriginal content provider, in advance of a corresponding request forcontent from the client computing device in order to improve performanceassociated with responding to this request.

Although various aspects of the disclosure will be described with regardto illustrative examples and embodiments, one skilled in the art willappreciate that the disclosed embodiments and examples should not beconstrued as limiting. For example, the present disclosure may bedescribed with regard to request routing services provided by a serviceprovider, such as a CDN service provider or DNS service provider, thatmay or may not provide additional services and functionality includingnetwork-based storage services, caching services, application hosting,or other services. Accordingly, use of the term “service provider” isnot intended to be limited to any particular type of service provider,whether discussed or described in examples. Accordingly, one skilled inthe relevant art will appreciate that a service provider need notprovide all, or any, of the additional services or functionality thatmay be associated with some service providers, such as a CDN serviceprovider.

FIG. 1 is a block diagram illustrative of content delivery environment100 for managing registration of a content provider with a serviceprovider, such as a CDN service provider, and subsequent processing ofat least a portion of content requests on behalf of the contentprovider. As illustrated in FIG. 1 , the content delivery environment100 includes a number of client computing devices 102 (generallyreferred to as clients) for requesting content from a content providerand/or a CDN service provider 106. In an illustrative embodiment, theclient computing devices 102 can correspond to a wide variety ofcomputing devices including personal computing devices, laptop computingdevices, hand-held computing devices, terminal computing devices, mobiledevices, wireless devices, various electronic devices and appliances andthe like. In an illustrative embodiment, the client computing devices102 include necessary hardware and software components for establishingcommunications over a communication network 110, such as a wide areanetwork or local area network. For example, the client computing devices102 may be equipped with networking equipment and browser softwareapplications that facilitate communications via the Internet or anintranet.

Illustratively, at least some of the client computing devices 102utilize a DNS resolver component 108, such as a DNS name server, thatreceives DNS queries from a client computing device 102 and thengenerates the DNS queries attributed to the client computing device, oron behalf of the client computing device. In one embodiment, the DNSresolver component 108 may be a local DNS component provided by anenterprise network to which the client computing device 102 belongs. Inanother embodiment, the local DNS resolver component 108 may be providedby an Internet Service Provider (“ISP”) that provides the communicationnetwork connection to the client computing device 102. In embodiments inwhich the client computing devices 102 utilize a DNS resolver component108, one skilled in the relevant art will appreciate that the DNSqueries generated on behalf of the client computing devices would beassociated with the IP address of the DNS resolver component 108 inaccordance with traditional networking protocols.

The content delivery environment 100 can also include a content provider104 in communication with the one or more client computing devices 102via the communication network 110. The content provider 104 illustratedin FIG. 1 corresponds to a logical association of one or more computingdevices associated with a content provider. Specifically, the contentprovider 104 can include a web server component 112 corresponding to oneor more server computing devices for obtaining and processing requestsfor content (such as Web pages) from the client computing devices 102.The content provider 104 can further include an origin server component114 and associated storage component 116 corresponding to one or morecomputing devices for obtaining and processing requests for networkresources. One skilled in the relevant art will appreciate that thecontent provider 104 can be associated with various additional computingresources, such additional computing devices for administration ofcontent and resources and the like. Additionally, although the originserver component 114 and associated storage component 116 are logicallyassociated with the content provider 104, the origin server component114 and associated storage component 116 may be geographicallydistributed throughout the communication network 110 in a manner to bestserve various demographics of client computing devices 102.

Although not illustrated in FIG. 1 , the content provider 104 can beassociated with a number of additional or supplemental components tofacilitate interaction with client computing devices 102 or serviceproviders. For example, a content provider 104 may maintain one or moreDNS name server components that are operative to receive DNS queriesrelated to registered domain names associated with the content provider104. The one or more DNS name servers can be authoritative to resolveclient computing device DNS queries corresponding to the registereddomain names of the content provider 104. The content provider 104 canalso maintain additional storage components, such as proxy servers, orutilize network storage service providers to maintain at least a portionof the content/resources provided to the client computing devices 102.

With continued reference to FIG. 1 , the content delivery environment100 can further include a service provider, generally referred to as theCDN service provider 106, in communication with the one or more clientcomputing devices 102 and the content provider 104 via the communicationnetwork 110. The CDN service provider 106 illustrated in FIG. 1corresponds to a logical association of one or more computing devicesassociated with a service provider. Specifically, the CDN serviceprovider 106 can include a number of Point of Presence (“POP”) locations118, 124 that correspond to nodes on the communication network 110. EachPOP 118, 124 includes a DNS component 120, 126 made up of a number ofDNS server computing devices for resolving DNS queries from the clientcomputers 102. Each POP 118, 124 also optionally includes a resourcecache component 122, 128 made up of a number of cache server computingdevices for storing resources from content providers or network storageproviders and transmitting various requested resources to various clientcomputers 102. The DNS components 120, 126 and the resource cachecomponents 122, 128 may further include additional software and/orhardware components that facilitate communications including, but notlimited, load balancing or load sharing software/hardware components.

In an illustrative embodiment, the DNS component 120, 126 and resourcecache component 122, 128 are considered to be logically grouped,regardless of whether the components, or portions of the components, arephysically separate. Additionally, although the POPs 118, 124 areillustrated in FIG. 1 as logically associated with the CDN serviceprovider 106, the POPs will be geographically distributed throughout thecommunication network 110 in a manner to best serve various demographicsof client computing devices 102. Additionally, one skilled in therelevant art will appreciate that the CDN service provider 106 can beassociated with various additional computing resources, such additionalcomputing devices for administration of content and resources, and thelike. Even further, the components of the CDN service provider 106 canbe managed by the same or different entities. One skilled in therelevant art will also appreciate that the components and configurationsprovided in FIG. 1 are illustrative in nature. Accordingly, additionalor alternative components and/or configurations, especially regardingthe additional components, systems, and subsystems for facilitatingcommunications may be utilized.

With continued reference to FIG. 1 , the content delivery environment100 can further include another service provider, generally referred toas a DNS service provider 134, in communication with the one or moreclient computing devices 102, the content provider 104, and the CDNservice provider 106 via the communication network 110. The DNS serviceprovider 134 illustrated in FIG. 1 corresponds to a logical associationof one or more computing devices associated with a service provider.Specifically, the DNS service provider 134 can include one or more DNScomponents 136 made up of a number of DNS server computing devices forresolving DNS queries from the client computers 102. Illustratively, theDNS service provider 134 would not necessarily include any additionalfunctionality and may provide a DNS request routing service in lieu ofany DNS request routing functionality provided by another serviceprovider, such as the CDN service provider 106.

With reference now to FIGS. 2-6 , the interaction between variouscomponents of the content delivery environment 100 of FIG. 1 will beillustrated. For purposes of the example, however, the illustration hasbeen simplified such that many of the components utilized to facilitatecommunications are not shown. One skilled in the relevant art willappreciate that such components can be utilized and that additionalinteractions would accordingly occur without departing from the spiritand scope of the present disclosure.

With reference to FIG. 2 , an illustrative interaction for the optionalregistration of a content provider 104 with a CDN service provider 106for hosting content on behalf of the content provider 104 will bedescribed. As illustrated in FIG. 2 , the CDN service provider contentregistration process begins with registration of the content provider104 with the CDN service provider 106. In an illustrative embodiment,the content provider 104 utilizes a registration application programinterface (“API”) to register with the CDN service provider 106 suchthat the CDN service provider 106 can provide content on behalf of thecontent provider 104. Illustratively, the registration API can includethe identification of the origin server 114 of the content provider 104that may provide requested resources to the CDN service provider 106. Inaddition or alternatively, the registration API can include the contentto be stored by the CDN service provider 106 on behalf of the contentprovider 104. Additionally, the content provider 104 can specify one ormore network storage providers (not illustrated) that may act as anorigin server for the content provider 104.

One skilled in the relevant art will appreciate that upon identificationof appropriate origin servers 114, the content provider 104 can begin todirect requests for content from client computing devices 102 to the CDNservice provider 106. Specifically, in accordance with DNS routingprinciples, a client computing device request corresponding to aresource identifier would eventually be directed toward a POP 118, 124associated with the CDN service provider 106. In the event that theresource cache component 122, 126 of a selected POP does not have a copyof a resource requested by a client computing device 102, the resourcecache component will request the resource from the origin server 114previously registered by the content provider 104.

With continued reference to FIG. 2 , upon receiving the registrationAPI, the CDN service provider 106 obtains and processes the registrationinformation. In an illustrative embodiment, the CDN service provider 106can then generate additional information that will be used by the clientcomputing devices 102 as part of the content requests. The additionalinformation can include, without limitation, client identifiers, such asclient identification codes, content provider identifiers, such ascontent provider identification codes, executable code for processingresource identifiers, such as script-based instructions, and the like.One skilled in the relevant art will appreciate that various types ofadditional information may be generated by the CDN service provider 106and that the additional information may be embodied in any one of avariety of formats.

The CDN service provider 106 returns an identification of applicabledomains for the CDN service provider (unless it has been previouslyprovided) and any additional information to the content provider 104. Inturn, the content provider 104 can then process the stored content withcontent provider specific information. In one example, as illustrated inFIG. 2 , the content provider 104 translates resource identifiersoriginally directed toward a domain of the origin server 114 to a domaincorresponding to the CDN service provider 106. The translated URLs areembedded into requested content in a manner such that DNS queries forthe translated URLs will resolve to a DNS server corresponding to theCDN service provider 106 and not a DNS server corresponding to thecontent provider 104.

Generally, the identification of the resources embedded in a baserequested resource (e.g., a Web page) and originally directed to thecontent provider 104 will be in the form of resource identifiers thatcan be processed by the client computing device 102, such as through abrowser software application. In an illustrative embodiment, theresource identifiers can be in the form of a uniform resource locator(“URL”). Because the resource identifiers included in the requestedcontent directed to the content provider, the resource identifiers canbe referred to generally as the “content provider URL.” For purposes ofan illustrative example, the content provider URL can identify a domainof the content provider 104 (e.g., contentprovider.com), a name of theresource to be requested (e.g., “resource.xxx”) and a path where theresource will be found (e.g., “path”). In this illustrative example, thecontent provider URL has the form of:

http://www.contentprovider.com/path/resource.xxx

During an illustrative translation process, the content provider URL ismodified such that requests for the resources associated with thetranslated URLs resolve to a POP associated with the CDN serviceprovider 106. In one embodiment, the translated URL identifies thedomain of the CDN service provider 106 (e.g., “cdnprovider.com”), thesame name of the resource to be requested (e.g., “resource.xxx”) and thesame path where the resource will be found (e.g., “path”). Additionally,in some embodiments, as will also be described further below, thetranslated URL can include additional processing information (e.g.,“additional information”) in a DNS portion of the URL. The DNS portionof the URL includes information that is accessible by a DNS serverduring DNS query processing, while a path portion of the URL is nottraditionally accessible or used during DNS query processing. Thetranslated URL would have the form of:

http://additional_information.cdnprovider.com/path/resources.xxx

In the foregoing illustrative embodiment, the DNS portion of thetranslated URL, which is used by a DNS server during DNS queryprocessing, comprises “additional_information.cdnprovider.com”, whilethe path portion of the translated URL comprises the“/path/resources.xxx” portion of the above URL.

With reference now to FIG. 3 , after completion of the registration andtranslation processes illustrated in FIG. 2 , a client computing device102 generates a content request for the base requested resource that isreceived and processed by the content provider 104, such as through theWeb server 112. In accordance with an illustrative embodiment, therequest for content can be in accordance with common network protocols,such as the hypertext transfer protocol (“HTTP”). Upon receipt of thecontent request, the content provider 104 identifies and returns theappropriate responsive content. In an illustrative embodiment, therequested content can correspond to a Web page that is displayed on theclient computing device 102 via the processing of information, such ashypertext markup language (“HTML”), extensible markup language (“XML”),and the like. The requested content can also include a number ofembedded resource identifiers that corresponds to resource objects thatshould be obtained by the client computing device 102 as part of theprocessing of the requested content. The embedded resources cancorrespond to multi-media content, such as images, videos, text, etc.that will be processed by the client computing devices 102 and renderedon an output device.

With reference now to FIG. 4A, in one embodiment, upon receipt of therequested content as shown in FIG. 2 , the client computing device 102processes the received information in a manner that causes the clientcomputing device 102 to request one or more embedded resources from theCDN service provider 106. As illustrated in FIG. 4A, in accordance withtraditional communication protocols, the client computing device 102would first transmit a DNS query to request an IP address of a computingdevice corresponding to each embedded resource.

By way of example, in accordance with traditional DNS request routingprinciples, resolving a DNS query for the embedded resource URL,http://www.CDNserviceprovider.com/path/resource.xxx, would first includethe partial resolution of the URL by identification of a DNS serverauthoritative to the “.” and the “com” portions of the URL. The issuanceof DNS queries corresponding to the “.” and the “com” portions of a URLare well known and have not been illustrated. After partially resolvingthe embedded resource URL for the “.” and “com” portions of the URL, theresolution of the DNS query for the embedded resource URL would theninclude the identification of the DNS server corresponding to the“.CDNserviceprovider” portion of the URL, such as DNS server component120 of POP 118 or a DNS server component 136 of the DNS service provider134. In the embodiment illustrated in FIG. 4A, the DNS server component120 of POP 118 has been identified as corresponding to the“.CDNserviceprovider” portion of the URL.

As further illustrated in FIG. 4A, the receiving DNS server component120 obtains the DNS query from the client computing device 102 andprocesses the DNS query. In accordance with traditional networkingprinciples, because the DNS server component 120 is authoritative forthe URL, the DNS server component 120 thus resolves the query byproviding the client computing device 102 with the identification of anIP address that can provide the corresponding requested content, such asa resource cache component 128 of the POP 124. In addition, inaccordance with the present disclosure, the DNS server component 120also processes the DNS query to identify pre-processing information,such as identification of content to be accelerated or other actions tobe implemented by one or more computing devices in association with ananticipated content request from the client computing device 102, aswill be further described below.

In one embodiment, the DNS server component 120 may identify theembedded resource that will be requested by the client computing device120 in association with the DNS query. Identification of the embeddedresource may be determined by parsing information from a DNS portion ofthe resource identifier corresponding to the DNS query. For example,identification of the embedded resource may be included as theadditional information in the DNS portion of the resource identifier. Ifthe embedded resource is an image, such as image1.jpeg, the resourceidentifier would include this information as prepended information inthe DNS portion of the resource identifier as follows:

http://image1.jpeg.D1.cdnprovider.com/path/resource.xxx

As another example, if the embedded resource is a video, the resourceidentifier could include information identifying the video, as well asother related information such as resolution, in the DNS portion of theresource identifier as follows:

http://video1.avi.resolution.D1.cdnprovider.com/path/resource.xxx

Alternatively, the information about the video file could be combined orotherwise referenced via a lookup, such as in the following resourceidentifier:

http://videolookupcode_x.cdnprovider.com/path/resource.xxx

Other information may also be included in the DNS portion of the aboveURLs, such as identification of the original content provider, D1,associated with the requested content. Accordingly, in one embodiment,the DNS server component 120 may alternatively or additionally parse theDNS query to obtain original content provider information.

In one embodiment, the additional information included in the DNSportion of the resource identifier can be included by the contentprovider 104 as a part of the translation process described above inreference to FIG. 2 . In another embodiment, a client computing devicecould dynamically generate one or more modified resource identifiersitself. For example, the client computing device may identify that itrequires a resource to be provided with a particular resolution suitablefor the client computing device and, as a result, dynamically modify theresource identifier to include the necessary additional information inthe DNS portion of the resource identifier to enable pre-processing ofthe resource at the particular resolution. In this embodiment, theclient computing device is modified to include a module for dynamicallytranslating embedded resources prior to issuing corresponding DNSqueries.

Returning to the DNS query processing of FIG. 4A, and as will bedescribed in further detail below in reference to FIG. 4B, the DNSserver component 120 may identify the pre-processing information forprovision to one or more computing devices that may subsequently processthe pre-processing information to identify and take one or more actions.Alternatively, the pre-processing information identified by the DNSserver component may also include identification of the one or moreactions and instructions for the one or more computing devices toimplement the one or more actions.

For example, in one embodiment, the DNS server component 120 simplyidentifies the embedded resource and provides information regarding theanticipated request for the embedded resource to the cache servercomponent that the DNS server component 120 identified responsive to theclient's DNS query, i.e., the resource cache component 128 of the CDNservice provider 106. In this case, the cache server component 120 canidentify whether the embedded resource is readily available in cache orwhether it will need to be preloaded by virtue of a request to theorigin server 114. In another embodiment, the DNS server component 120can both identify the embedded resource and instruct the CDN serviceprovider 106 and/or content provider to take a particular action, suchas preloading the embedded resource, if it is not available, at the CDNservice provider in anticipation of the request for the embeddedresource from the client computing device 102.

In another embodiment, the DNS server component 120 may simply identifythat a request for a resource, such as an embedded resource, is going tobe made by the client and that a communications channel, such as a TCPconnection, will need to be opened with an origin server to ultimatelyobtain the resource. For example, the resource may not be readilyavailable at the CDN service provider to which the resource request willbe directed as a result of the resolution of the DNS query and, in thiscase, the DNS server component 120, may identify that the action ofopening a communications channel between the CDN service provider 106and the origin server 114 will be required. The DNS server component120, as will be further described below in reference to FIG. 4B,provides this pre-processing information to either the resource cachecomponent that will receive the resource request and/or the originalcontent provider 104 for purposes of one or both of those computingdevices opening a communications channel in anticipation of the resourcerequest. In other embodiments, instead of opening a communicationschannel, the pre-processing information may be to keep a communicationschannel open, to reset a time to live (TTL) associated with acommunications channel, to open multiple communications channels inorder to handle a large content request, and the like.

In yet another embodiment, the DNS server component 120 may identifythat a request for content which resides at the resource cache component128 will be made, but that the requested content will need to beconverted into a different format. The DNS server component 120 may thusdetermine that the requested content will need to be transcoded beforeprovision to the client computing device 106 and provide thispre-processing information to the resource cache component 128 prior tothe client content request as will also be further described inreference to FIG. 4B below. The pre-processing information can compriseinstructions to complete the identified action or simply the relevantinformation for the receiving computing device to identify the action tobe taken in anticipation of the particular client content request.

Turning now to FIG. 4B, the DNS server component 120 implements theidentified pre-processing information determined from the DNS query asdiscussed above in reference to FIG. 4A. As a result, the DNS servercomponent 120 provides the identified pre-processing information to theappropriate computing device, such as the original content provider 104or another identified server component for resolving the anticipatedclient resource request, i.e., the resource cache component 128 of theCDN service provider 106 in accordance with the current example, orboth. The content provider 104 and/or the resource cache component 128then processes the received pre-processing information to take action inadvance of the anticipated client resource request. This action mayinclude opening a communications channel, preloading the requestedcontent at the resource cache component 128 if it is not otherwiseavailable, commencing transcoding of content into an appropriate formatfor the anticipated resource request, and the like. Ultimately, theaction can be any action that would help speed up processing of ananticipated resource request from a client computing device 102. Again,as similarly set forth above, the action may be identified by the DNSserver component 120 and provided to the content provider 104 and/or theresource cache component 128 in the form of instructions to implementthe action. Alternatively, the pre-processing information may simplyinclude the necessary information for the content provider 104 and/orresource cache component 128 to determine the necessary pre-processingaction required in anticipation of the client resource request. As shownin FIG. 4B, the processing of the pre-processing information at thecontent provider 104 and/or resource cache component 128 may alsorequire request processing between the content provider 104 and theresource cache component 128.

For example, in one embodiment, the DNS server component 120 may haveidentified an embedded resource that will be requested by the clientcomputing device 120 in association with processing the DNS query. Inone embodiment, the DNS server component 120 implements this identifiedpre-processing information by sending instructions to the resource cachecomponent 128 to preload the identified embedded resource if it is notalready available at the resource cache component 128. For example, thisresult may be common for dynamic content that is not typically cached atthe CDN service provider 106, as opposed to static content that is oftenalready cached and available to be immediately provided in response to aresource request from a client computing device. As a result, theresource cache component 128 may request the opening of a communicationschannel with the content provider 104 in anticipation of the resourcerequest from the client computing device 102. In addition, the resourcecache component 128 may also request preloading of the identifiedembedded resource at the resource cache component 128 from the originserver 114. In other embodiments, the implementation of thispre-processing information may result in the DNS server component 120instead directly instructing the content provider 104 to open acommunications channel with the resource cache component 128,particularly where the DNS server component 120 can identify theoriginal content provider 104, such as through parsing information in aDNS portion of a corresponding DNS query.

In another embodiment, the implementation of the pre-processinginformation may simply include identification that a communicationschannel will need to be opened in anticipation of a resource requestfrom the client computing device and thus result in the DNS servercomponent 120 sending instructions to the content provider 104 and/orresource cache component to open a communications channel. Thecommunications channel may be a channel between the origin server 114and the resource cache component 128. The content provider 104 and/orthe resource cache component 128, in turn, process the pre-processinginformation and take the corresponding anticipatory action, which inthis embodiment is opening of a communications channel in anticipationof the client resource request.

In yet another embodiment, the implementation of the pre-processinginformation may involve identifying that an embedded resourcecorresponding to an anticipated request from the client computing device102 needs to be in a particular format and thus result in the DNS servercomponent 120 sending instructions to the resource cache component 128,for example, to start conversion of the embedded resource, such as avideo file, into an appropriate format for responding to the anticipatedclient resource request.

With reference now to FIG. 5 , upon receipt of the resolved DNS query,the client computing device 102 transmits a request for the content tothe identified IP address corresponding to the resource cache componentthat can provide the requested content, i.e., resource cache component128 in accordance with the foregoing embodiment. In accordance with anembodiment utilizing the hypertext transfer protocol (“HTTP”), therequest of a resource can correspond to a GET request transmitted by theclient computing device 102 to an IP address associated with CDN serviceprovider 106. In this embodiment, the content request is received andprocessed by the resource cache component 128. Responsive to thisrequest, the resource cache component 128 provides the resource to theclient computing device 102. Upon receipt, the requested resource isprocessed by the browser application on the client computing device 102as appropriate. It will be appreciated by one skilled in the relevantart that a selected resource cache component 122, 128 can either providethe requested resource if it is available or attempt to obtain therequested resource from another source, such as a peer cache servercomputing device or the origin server 114 of the content provider 104.

With reference now to FIG. 6 one embodiment of a routine 600 implementedby a DNS server component 120, 126 of the CDN service provider 106 or aDNS server component 136 of a DNS service provider 134 for processingDNS queries to identify pre-processing information will be described.One skilled in the relevant art will appreciate that actions/stepsoutlined for routine 600 may be implemented by one or many computingdevices/components that are associated with the CDN service provider 106or DNS service provider 134. Accordingly, routine 600 has been logicallyassociated as being generally performed by a DNS server component of theCDN service provider 106 or DNS service provider 134, and thus thefollowing illustrative embodiments should not be construed as limiting.

At block 602, the DNS server component obtains a DNS query correspondingto a resource identifier. As previously discussed, the resourceidentifier can be a URL that has been embedded in content requested bythe client computing device 102 and previously provided by the contentprovider 104 and/or otherwise modified by a client computing device toinclude additional information particular to the client computingdevice. At block 604, the DNS server component identifies pre-processinginformation associated with the DNS query and/or the correspondingresource identifier. As set forth above, the pre-processing informationmay include identification of content to be preloaded or otheranticipated actions required to respond to an anticipated client contentrequest.

At block 606, the DNS server component resolves the DNS query bydetermining an IP address of a computing device that can provide therequested content, such as a resource cache component 128 of the POP124, and transmitting the IP address to the client computing device 102.It should be appreciated that blocks 604 and 606 are both associatedwith processing of the DNS query and, as such, could be performed in anyorder or simultaneously.

At block 608, the DNS server component performs a subroutine forimplementing one or more pre-processing actions associated with theidentified pre-processing information. As set forth above, theimplementation of pre-processing information may include providing theidentified pre-processing information to the appropriate computingdevice, such as the original content provider 104, the resource cachecomponent 128, or both, or sending instructions to the appropriatecomputing device to take a particular action in advance of theanticipated client resource request. This action may include opening acommunications channel, preloading the requested content at the resourcecache component 128 if it is not otherwise available, commencingtranscoding of content into an appropriate format for the anticipatedresource request, and the like. Ultimately, the action can be any actionthat would help speed up processing of an anticipated resource requestfrom a client computing device 102. At block 610, the routine 600terminates.

With reference now to FIG. 7 , one embodiment of a subroutine routine700 for implementing one or more pre-processing actions as set forth atblock 608 of FIG. 6 will be described. Specifically, a DNS servercomponent at a service provider, such as the DNS service provider 134 orCDN service provider 106, can utilize pre-processing information toanticipate actions which will be required to respond to a client contentrequest. One skilled in the relevant art will appreciate thatactions/steps outlined for subroutine 700 may be implemented by one ormany computing devices/components that are associated with the DNSservice provider 134 or CDN service provider 106. Additionally, routine700 may be implemented by a combination of components from the DNSservice provider 134 and CDN service provider 106 in embodiments inwhich both service providers share common control or ownership.Accordingly, subroutine 700 has been logically associated as beingperformed by a DNS server component of the DNS service provider 134 orCDN service provider 106.

At a block 702, a DNS server component performs a test to determinewhether the identified pre-processing information includesidentification of cacheable content. For example, the DNS servercomponent identifies the embedded resource that a client computingdevice will request upon resolution of the DNS query. As set forthabove, information about the embedded resource is included in the DNSportion of the resource identifier, and the DNS server componentidentifies this embedded resource by parsing the DNS portion of the DNSquery. Once the embedded resource is identified, the DNS servercomponent identifies whether the embedded resource comprises cacheablecontent. Static content in a Web page, for example, is consideredcacheable, while dynamic content is typically not. Essentially, the DNSserver component is determining whether the embedded resource is likelyto be available at the resource cache component corresponding to the IPaddress provided to the client computing device in response to the DNSquery.

If the answer at block 702 is yes, the DNS server component transmitspre-processing information to the resource cache component. In oneembodiment, the pre-processing information may include instructions orinformation for the resource cache component to perform some preliminaryprocessing action in anticipation of the request from the clientcomputing device for the embedded resource, such as opening of one ormore communications channels between nodes at a POP of the CDN serviceprovider in order to, for example, move content as close as possible toa cache component that will service the anticipated request for content.In another embodiment, the pre-processing information may includeidentification of a format of the embedded resource required to respondto an anticipated request from the client computing device 102 for theembedded resource and/or instructions associated with commencingconversion of the embedded resource into the appropriate format inanticipation of the client request.

If the answer at block 704 is no, processing continues at block 706where the DNS server component performs a test to determine whether theidentified pre-processing information includes identification of anynon-cacheable content, such as content not typically stored by theresource cache component 128 of the CDN service provider 106. This typeof content would need to be obtained by the resource cache component 128of the CDN service provider 106 from another source, such as the originserver 114 of the content provider 114. Dynamic content, for example, isoften considered non-cacheable content in this context.

If the answer at block 706 is yes, the DNS server component transmitspre-processing information to the origin server 114 of the contentprovider 104. In one embodiment, the pre-processing information includesinstructions or identification of the non-cacheable content for theorigin server 114 to preload to the resource cache component 128 inanticipation of a request from the client computing device 102 for thenon-cacheable content. In another embodiment, the pre-processinginformation may simply include instructions or information for theorigin server 114 to open a communications channel with the resourcecache component 128 in anticipation of the request for the non-cacheablecontent from the resource cache component 128. Processing of thesubroutine ends at block 710. In addition, if the answer at block 706 isno, processing of the subroutine also ends at block 710.

It will be appreciated by one skilled in the relevant art that there area number of ways to modify the routing information associated withrequests from a class of client computing devices. It will further beappreciated by one skilled in the relevant art that the timing at whichperformance is monitored and updates to routing information are made canvary.

It will be appreciated by those skilled in the art and others that allof the functions described in this disclosure may be embodied insoftware executed by one or more processors of the disclosed componentsand mobile communication devices. The software may be persistentlystored in any type of non-volatile storage.

Conditional language, such as, among others, “can,” “could,” “might,” or“may,” unless specifically stated otherwise, or otherwise understoodwithin the context as used, is generally intended to convey that certainembodiments include, while other embodiments do not include, certainfeatures, elements and/or steps. Thus, such conditional language is notgenerally intended to imply that features, elements and/or steps are inany way required for one or more embodiments or that one or moreembodiments necessarily include logic for deciding, with or without userinput or prompting, whether these features, elements and/or steps areincluded or are to be performed in any particular embodiment.

Any process descriptions, elements, or blocks in the flow diagramsdescribed herein and/or depicted in the attached figures should beunderstood as potentially representing modules, segments, or portions ofcode which include one or more executable instructions for implementingspecific logical functions or steps in the process. Alternateimplementations are included within the scope of the embodimentsdescribed herein in which elements or functions may be deleted, executedout of order from that shown or discussed, including substantiallyconcurrently or in reverse order, depending on the functionalityinvolved, as would be understood by those skilled in the art. It willfurther be appreciated that the data and/or components described abovemay be stored on a computer-readable medium and loaded into memory ofthe computing device using a drive mechanism associated with a computerreadable storing the computer executable components such as a CD-ROM,DVD-ROM, or network interface further, the component and/or data can beincluded in a single device or distributed in any manner. Accordingly,general purpose computing devices may be configured to implement theprocesses, algorithms and methodology of the present disclosure with theprocessing and/or execution of the various data and/or componentsdescribed above.

It should be emphasized that many variations and modifications may bemade to the above-described embodiments, the elements of which are to beunderstood as being among other acceptable examples. All suchmodifications and variations are intended to be included herein withinthe scope of this disclosure and protected by the following claims.

What is claimed is:
 1. A method comprising: receiving a DNS query from aclient computing device at a DNS server component, wherein the DNS querycorresponds to a Web page associated with a resource identifier;parsing, at the DNS server component, pre-processing information fromthe resource identifier corresponding to the DNS query, wherein thepre-processing information includes identification of an embeddedresource of the Web page and identification of an action to be takenwith respect to the embedded resource in advance of a subsequent requestfrom the client computing device for the embedded resource; resolvingthe DNS query by selecting a cache server component for providing theWeb page to the client computing device and transmitting informationidentifying the selected cache server component to the client computingdevice, wherein the DNS server component and the cache server componentare different; and implementing, at the DNS server component, thepre-processing information by identifying the embedded resource,determining the action to be taken with respect to the identifiedembedded resource, and providing, to the cache server component inadvance of the subsequent request from the client computing device forthe embedded resource, the pre-processing information.
 2. The method asrecited in claim 1, wherein the action comprises instructions to open acommunications channel.
 3. The method as recited in claim 1, wherein theaction comprises instructions to keep a communications channel open. 4.The method as recited in claim 1, wherein the action comprisesinstructions to reset a time to live associated with a communicationschannel.
 5. The method as recited in claim 1, wherein the actioncomprises instructions to open multiple communications channels in orderto handle the subsequent request for the embedded resource.
 6. Themethod as recited in claim 1, wherein the action comprises instructionsto enable pre-processing of the embedded resource at a particularresolution.
 7. The method as recited in claim 1, wherein the actioncomprises instructions to commence transcoding the embedded resourceinto a particular format.
 8. The method as recited in claim 1, whereinthe action comprises instructions to the selected cache server componentto open a communications channel between two or more nodes of a contentdelivery network associated with the selected cache server component. 9.The method as recited in claim 1, wherein the action comprisestransmitting instructions to the selected cache server component to opena communications channel between the selected cache server component andan origin server of the original content provider.
 10. The method asrecited in claim 1, wherein the action comprises transmittinginstructions to the original content provider to open a communicationschannel between an origin server of the original content provider andthe selected cache server component.
 11. A system comprising: a DNSserver component implemented by a computing device, wherein the DNSserver component is operable to: receive a DNS query from a clientcomputing device at a DNS server, wherein the DNS query corresponds to aWeb page associated with a resource identifier; identify pre-processinginformation from the resource identifier corresponding to the DNS query,wherein the pre-processing information includes identification of anembedded resource of the Web page and identification of an action to betaken with respect to the embedded resource in advance of a subsequentrequest from the client computing device for the embedded resource;resolve the DNS query by selecting a cache server component forproviding the Web page to the client computing device and transmittinginformation identifying the selected cache server component to theclient computing device, wherein the DNS server component and the cacheserver component are different; and implement the pre-processinginformation by identifying the embedded resource, determining the actionto be taken with respect to the identified embedded resource, andproviding, to the cache server component in advance of the subsequentrequest from the client computing device for the embedded resource, thepre-processing information.
 12. The system as recited in claim 11,wherein the action comprises instructions for the cache server componentto convert the embedded resource into a different format.
 13. The systemas recited in claim 11, wherein the action comprises instructions forthe DNS server component to send to the cache server component tocommence converting the embedded resource of the Web page into anappropriate file format in anticipation of the subsequent request fromthe client computing device for the embedded resource.
 14. The system asrecited in claim 11, wherein the action comprises instructions for theDNS server component to send to the cache server component to preloadthe embedded resource of the Web page.
 15. The system as recited inclaim 11, wherein the action comprises instructions to open acommunications channel.
 16. The system as recited in claim 11, whereinthe action comprises instructions to keep a communications channel open.17. The system as recited in claim 11, wherein the action comprisesinstructions to reset a time to live associated with a communicationschannel.
 18. The system as recited in claim 11, wherein the actioncomprises instructions to open multiple communications channels in orderto handle the subsequent request for the embedded resource.
 19. Thesystem as recited in claim 11, wherein the action comprises instructionsto enable pre-processing of the embedded resource at a particularresolution.
 20. The system as recited in claim 11, wherein the actioncomprises transmitting instructions to the selected cache servercomponent to open a communications channel between the selected cacheserver component and an origin server of the original content provider.21. The system as recited in claim 11, wherein the resource identifiercomprises a uniform resource locator (URL).